forked from cloudevents/sdk-javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge #1
Merged
Merged
Merge #1
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
* fix: ensure binary events can handle no content-type header The fix provided in #118 only included tests for `receiver.check()`, and the change in that case was to add the `application/json` content type to the cleansed headers if to type was specified. However, `receiver.parse()` did not receive the benefit of this change. It calls `this.check()` but then sanitizes the original headers again, and the missing content-type was not re-inserted into the newly sanitized headers. This commit, modifies the code so that `receiver.check()` does not insert the content-type, but does allow the validation check to pass if no content-type header exists. When `receiver.parse()` is called, and the headers are sanitized again - and this time used to look up parser implementation, the default `application/json` content-is applied if no content-type header exists. I've also removed a redundant call to `receiver.check()` in receiver_binary_1.js and simplified the usage of `Constants` in the test. Signed-off-by: Lance Ball <lball@redhat.com> * chore: clean up header sniffing Signed-off-by: Lance Ball <lball@redhat.com>
Using this GH action will prevent issues and pull requests from sitting unattended for more than 30 days. Ref: https://github.com/actions/stale
This commit modifies the README to show new API usage for the `HTTPReceiver` and `CloudEvent` classes, and updates the examples to use this as well. Overall structure and content has been modified to look more like the sdk-go README. Fixes: #128 Signed-off-by: Lance Ball <lball@redhat.com>
This commit changes the event mode detection in `HTTPReceiver` so that it will throw a TypeError if the event mode can't be detected per the spec. Signed-off-by: Lance Ball <lball@redhat.com>
This commit adds instructions and details to contributors guide and provides detailed guidance for pull requests and maintainers in separate documents. Signed-off-by: Lance Ball <lball@redhat.com>
This commit removes two unnecessary else clauses in unmarshaller.js, and also extracts the throwing of TypeError of invalid content types into a separate function to avoid some code duplication. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This commit removes the require of uuid from this test and uses a hardcoded value for the 'id' constant instead. The motivation for this is that the value for 'id' does not need to be generated for each test run, and fewer requires helps readabilitly I find. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This commit adds the '.js' suffix to the require of receiver_binary_0_3 to be consistent with the other requires statments in this file. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
Currently, the mode variable in getMode is set to 'unknown' but this will never get returned as the else clause will throw a TypeError if the detected mode (from the passed-in headers) is not structured or binary. This commit suggests simplifying the getMode function and removes the mode variable. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
Co-authored-by: Lance Ball <lball@redhat.com> Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
Signed-off-by: Helio Frota <00hf11@gmail.com>
This commit add JSDoc documentation to the CloudEvent and HTTPReceiver objects exposed by the API when using the top level imports, specifically `CloudEvent` and `HTTPReceiver`. This adds a `generate-docs` npm script to generate site and API documentation for GitHub pages in `./docs`. Signed-off-by: Lance Ball <lball@redhat.com>
After updating and running npm install the package-lock.json file is updated. I can see that packate-lock.json was included in Commit b283583 ("docs: add JSDocs for top level API objects") but perhaps there were changes to package.json that were made after and went unnoticed. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This commit changes the setterByAttribute to be a map and tries to reduce some code duplication and improve readability. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This change adds a `ValidationError` type that extends `TypeError`. Any time a `CloudEvent` cannot be received and created with the given input, this error will be thrown. Tests have all been updated to check for the error type. Signed-off-by: Lance Ball <lball@redhat.com>
Signed-off-by: Helio Frota <00hf11@gmail.com>
* feat!: expose a version agnostic event emitter This is a breaking change. This commit exposes an HTTP based event emitter that simplifes the API. To use it, simply import the SDK and start emitting. The default spec version is 1.0, but you can use 0.3 by supplying that to the constructor. By default, CloudEvents are emitted in binary mode, but this can be changed by providing the "structured" parameter to the `send()` function. This commit also eliminates the version specific emitters and receivers from the `v1` and `v03` exports, and eliminates the explicit usage of versioned emitters from `lib/bindings/http`. Finally, the CE headers can be retrieved from the emitter for a given event by passing the event to the `headers()` function. Fixes: #124 Fixes: #149 Signed-off-by: Lance Ball <lball@redhat.com>
Signed-off-by: Helio Frota <00hf11@gmail.com>
Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This commit removes the version variable from getVersion and updates the code to use return statements to be consistent with other functions in this file, like getMode and accept. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This commit removes the 'result' variable form the utility function asData. The motivation is to improve readability. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This commit pulls the constants up from the lib/bindings/http/constants.js and exports them in the top level index.js. There are some elements of the API where we expect users to provide constant values, and this makes it easier for them to be sure the values they provide are what is expected. I've also added two new constants: `BINARY` and `STRUCTURED`. Signed-off-by: Lance Ball <lball@redhat.com>
Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
This is a breaking change. This commit makes a number of changes to the HTTP bindings code in an attempt to simplify its usage and implementation. From a very high level, this inverts the existing dependencies. As an example, consider `lib/bindings/http/receiver_structured_1.js`. https://github.com/cloudevents/sdk-javascript/blob/v1.0.0/lib/bindings/http/receiver_structured_0_3.js This class instantiates `lib/bindings/http/receiver_structured.js` and delegates its function invokations to it. This had the effect of requiring a user to know what event versions they would be receiving. And for me personally was a little confusing as a maintainer. The change introduced here reverses that logic, so that the version agnostic receiver is what the user instantiates. It instantiates the approrpiate version of a specific receiever and delegates to it - reversing the dependencies. I've also moved all of the top level directories related to HTTP versions into `lib/bindings/http/v1` and `lib/bindings/http/v03` and generally done some rearranging to make the repository structure cleaner and more organized. Signed-off-by: Lance Ball <lball@redhat.com>
This commit turns the headerByGetter Object into a Map to reduces some code duplication an hopefully improve readability a little. Signed-off-by: Daniel Bevenius <daniel.bevenius@gmail.com>
…perties (#172) This commit makes a substantial change to the API, changing the CloudEvent class to accept properties as an object in the constructor. For example: ```js const CloudEvent = require('cloudevents-sdk'); // all event properties except extensions may be set in the constructor const event = new CloudEvent({ source: 'http://my.event.source', type: 'test-event-type' }); // get and set all properties standard property notation console.log(event.time); // the event timestamp event.subject = 'my event subject'; ``` Signed-off-by: Lance Ball <lball@redhat.com>
Signed-off-by: Lance Ball <lball@redhat.com>
Fixes: #86 Signed-off-by: Lance Ball <lball@redhat.com>
Signed-off-by: Grant Timmerman <timmerman+devrel@google.com>
Fixes: #212 Signed-off-by: Lance Ball <lball@redhat.com>
Signed-off-by: Grant Timmerman <timmerman+devrel@google.com>
Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
* feat!: pass extension into the constructor. * This allows someone to pass an extension/extensions into the CloudEvent contructor when creating a CloudEvent. fixes #209 Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
This commit introduces a second `tsc` execution which generates JS in ES5 form. Then, webpack is used to generate a browser bundle. Fixes: #94 Signed-off-by: Lance Ball <lball@redhat.com>
There is nothing really to do in order to support events over websockets. Since a `CloudEvent` can easily be represented in full with JSON, it can be sent over a websocket as `event.toString()`. This example illustrates sending a `CloudEvent` over websocket from a browser or CLI. Fixes: #156 Signed-off-by: Lance Ball <lball@redhat.com>
Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
fixes #222 Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
Signed-off-by: Matej Vasek <mvasek@redhat.com>
This is a major rewrite of the entire codebase into TypeScript. Nearly all tests have been retained except where behavior is significantly different. Some highlights of these changes: * lowercase all CloudEvent properties and fix base64 encoded data Previously there was a format() function that would convert a CloudEvent object into JSON with all of the properties lowercased. With this rewrite a CloudEvent object can be converted to JSON simply with JSON.stringify(). However, in order to be compliant with the JSON representation outlined in the spec here https://github.com/cloudevents/spec/blob/v1.0/json-format.md all of the event properties must be all lowercase. * lib(transport): make transport mode an Enum * src: allow custom headers (#1) * lib(exports): export explicitly versioned names where appropriate * lib(cloudevent): modify ctor to accept extensions inline * lib(cloudevent): make extensions a part of the event object * test: convert all tests to typescript * examples: update all examples with latest API changes * docs: update README with latest API changes * src: add prettier for code style and fix a lot of linting errors * lib: move data decoding to occur within the CloudEvent object Signed-off-by: Lance Ball <lball@redhat.com>
Snyk has created this PR to upgrade uuid from 8.0.0 to 8.1.0. See this package in NPM: https://www.npmjs.com/package/uuid See this project in Snyk: https://app.snyk.io/org/lance/project/37afc620-45ad-41a3-9acc-1ac155caebc7?utm_source=github&utm_medium=upgrade-pr Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
* chore(actions): don't auto-close stale issues and pull requests Open issues and pull requests should be closed by a human who has considered the issue/pr and made a choice based on the content of the issue/pr and the state of the repository. What this means in practice is that some issues will stay open for a long time, even if they are stale. They may be open because it really is something that will be considered for future work. Periodic issue triage should be done by the maintainers, and if an issue _should_ be closed - for example, the issue is no longer relevant - then a maintainer can close it. Signed-off-by: Lance Ball <lball@redhat.com>
Even though the underlying structured and binary receivers already sanitize the headers, this needs to be done at the receiver.accept() level since the headers are inspected there to determine what mode the event is being sent as. Signed-off-by: Lance Ball <lball@redhat.com>
This is the first version that actually avoids closing stale issues if `days-before-close < 0`. Signed-off-by: Lance Ball <lball@redhat.com>
…238) This commit adds cucumber-js conformance steps and includes the cucumber tests in 'npm test'. Signed-off-by: Lance Ball <lball@redhat.com>
…nt itself. (#234) BREAKING CHANGE: * This change makes the CloudEvent Read-only and validates the input during object creation. * To augment an already created CloudEvent object, we have added a `cloneWith` method that takes attributes to add/update. Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
Bumps [standard-version](https://github.com/conventional-changelog/standard-version) from 7.1.0 to 8.0.1. - [Release notes](https://github.com/conventional-changelog/standard-version/releases) - [Changelog](https://github.com/conventional-changelog/standard-version/blob/master/CHANGELOG.md) - [Commits](conventional-changelog/standard-version@v7.1.0...v8.0.1) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Snyk has created this PR to upgrade uuid from 8.1.0 to 8.2.0. See this package in NPM: https://www.npmjs.com/package/uuid See this project in Snyk: https://app.snyk.io/org/lance/project/37afc620-45ad-41a3-9acc-1ac155caebc7?utm_source=github&utm_medium=upgrade-pr Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
… now (#248) * also update readme with a mention about the cloneWith method Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
BREAKING CHANGE: * Extension names are now validated during object creation. The values are defined by the specification, and can be lowercase(a-z) or digits(0-9) and must be no longer that 20 characters Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
This commit separates the spec compliance table in the README.md file into three: the core spec, event formats, and transport protocols. Fixes: #166 Signed-off-by: Lance Ball <lball@redhat.com>
The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JS-AJV-584908 Signed-off-by: Lucas Holmquist <lholmqui@redhat.com>
* Add Copyright Date and Holder name Signed-off-by: Sidharth Vinod <sidharthv96@gmail.com>
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.15...4.17.19) Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit modifies the HTTP receivers/parsers to allow for the incoming body of an HTTP request to be empty if the event message is sent using the binary mode. In structured mode, a `ValidationError` will still be thrown, since the entire event must be encoded in the HTTP body. Signed-off-by: Lance Ball <lball@redhat.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
No description provided.